package edu.uoc.tds.pac4.beans;

import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

public class Usuari implements Esborrable, Serializable {
	private static final long serialVersionUID = 1L;
	protected String codi;
	protected String idCard;
	protected String nom;
	protected String cognoms;
	protected Pais pais;
	protected Localitat localitat;
	protected String cp;
	protected String adreca;
	protected String telefon;
	protected String mobil;
	protected String fax;
	protected String email;
	protected String perfilUsuari;
	protected String clau;
	protected Date dataAlta;

	// esborrable
	protected boolean actiu;
	protected Date dataBaixa;
	protected String motiuBaixa;
	
	public Usuari(){
		super();		
	}
	
	/**
	 * Constructor ALTA
	 * @param codi
	 * @param idCard
	 * @param nom
	 * @param cognoms
	 * @param pais
	 * @param localitat
	 * @param cp
	 * @param adreca
	 * @param telefon
	 * @param mobil
	 * @param fax
	 * @param email
	 * @param perfilUsuari
	 * @param clau
	 * @param dataAlta
	 */

	public Usuari(String codi, String idCard, String nom, String cognoms,
			Pais pais, Localitat localitat, String cp, String adreca,
			String telefon, String mobil, String fax, String email, String perfilUsuari,
			String clau, Date dataAlta) {
		super();
		this.codi = codi;
		this.idCard = idCard;
		this.nom = nom;
		this.cognoms = cognoms;
		this.pais = pais;
		this.localitat = localitat;
		this.cp = cp;
		this.adreca = adreca;
		this.telefon = telefon;
		this.mobil = mobil;
		this.fax = fax;
		this.email = email;
		this.perfilUsuari = perfilUsuari;
		this.clau = clau;
		this.dataAlta = dataAlta;
	}
	/**
	 * Constructor amb TOTES les dades
	 * @param codi
	 * @param idCard
	 * @param nom
	 * @param cognoms
	 * @param pais
	 * @param localitat
	 * @param cp
	 * @param adreca
	 * @param telefon
	 * @param mobil
	 * @param fax
	 * @param email
	 * @param perfilUsuari
	 * @param clau
	 * @param dataAlta
	 * @param actiu
	 * @param dataBaixa
	 * @param motiuBaixa
	 */
	public Usuari(String codi, String idCard, String nom, String cognoms,
			Pais pais, Localitat localitat, String cp, String adreca,
			String telefon, String mobil, String fax, String email, String perfilUsuari,
			String clau, Date dataAlta, boolean actiu, Date dataBaixa,
			String motiuBaixa) {
		super();
		this.codi = codi;
		this.idCard = idCard;
		this.nom = nom;
		this.cognoms = cognoms;
		this.pais = pais;
		this.localitat = localitat;
		this.cp = cp;
		this.adreca = adreca;
		this.telefon = telefon;
		this.mobil = mobil;
		this.fax = fax;
		this.email = email;
		this.perfilUsuari = perfilUsuari;
		this.clau = clau;
		this.dataAlta = dataAlta;
		this.actiu = actiu;
		this.dataBaixa = dataBaixa;
		this.motiuBaixa = motiuBaixa;
	}
	public String getCodi() {
		return codi;
	}
	public void setCodi(String codi) {
		this.codi = codi;
	}
	public String getIdCard() {
		return idCard;
	}
	public void setIdCard(String idCard) {
		this.idCard = idCard;
	}
	public String getNom() {
		return nom;
	}
	public void setNom(String nom) {
		this.nom = nom;
	}
	public String getCognoms() {
		return cognoms;
	}
	public void setCognoms(String cognoms) {
		this.cognoms = cognoms;
	}
	public Pais getPais() {
		return pais;
	}
	public void setPais(Pais pais) {
		this.pais = pais;
	}
	public Localitat getLocalitat() {
		return localitat;
	}
	public void setLocalitat(Localitat localitat) {
		this.localitat = localitat;
	}
	public String getCp() {
		return cp;
	}
	public void setCp(String cp) {
		this.cp = cp;
	}
	public String getAdreca() {
		return adreca;
	}
	public void setAdreca(String adreca) {
		this.adreca = adreca;
	}
	public String getTelefon() {
		return telefon;
	}
	public void setTelefon(String telefon) {
		this.telefon = telefon;
	}
	public String getMobil() {
		return mobil;
	}
	public void setMobil(String mobil) {
		this.mobil = mobil;
	}
	public String getFax() {
		return fax;
	}
	public void setFax(String fax) {
		this.fax = fax;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPerfilUsuari() {
		return perfilUsuari;
	}
	public void setPerfilUsuari(String perfilUsuari) {
		this.perfilUsuari = perfilUsuari;
	}
	public String getClau() {
		return clau;
	}
	public void setClau(String clau) {
		this.clau = clau;
	}
	public Date getDataAlta() {
		return dataAlta;
	}
	public void setDataAlta(Date dataAlta) {
		this.dataAlta = dataAlta;
	}
	public boolean isActiu() {
		return actiu;
	}
	public void setActiu(boolean actiu) {
		this.actiu = actiu;
	}
	public Date getDataBaixa() {
		return dataBaixa;
	}
	public void setDataBaixa(Date dataBaixa) {
		this.dataBaixa = dataBaixa;
	}
	public String getMotiuBaixa() {
		return motiuBaixa;
	}
	public void setMotiuBaixa(String motiuBaixa) {
		this.motiuBaixa = motiuBaixa;
	}
	@Override
	public void baixa(Date data, String motiu) {
		this.actiu=false;
		this.dataBaixa=data;
		this.motiuBaixa = motiu;
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return nom;
	}
	/**
	 * Construeix un usuari a partir d'un RS
	 * @param rs
	 * @param prefix= prefix que cal posar al camp sql
	 * @throws SQLException 
	 */
	public void buildFromRS(ResultSet rs, String prefix) throws SQLException {
		this.setCodi(rs.getString(prefix + "_codi"));
		this.setIdCard(rs.getString(prefix + "_idCard"));
		this.setNom(rs.getString(prefix + "_nom"));
		this.setCognoms(rs.getString(prefix + "_cognoms"));
		Pais pais = new Pais();
		pais.buildFromRS(rs);
		this.setPais(pais);
		Localitat localitat = new Localitat();
		localitat.buildFromRS(rs);
		this.setLocalitat(localitat);
		this.setCp(rs.getString(prefix + "_cp"));
		this.setAdreca(rs.getString(prefix + "_adreca"));
		this.setTelefon(rs.getString(prefix + "_telefon"));
		this.setMobil(rs.getString(prefix + "_mobil"));
		this.setFax(rs.getString(prefix + "_fax"));
		this.setEmail(rs.getString(prefix + "_email"));
		this.setPerfilUsuari(rs.getString(prefix + "_perfilUsuari"));
		this.setClau(rs.getString(prefix + "_clau"));
		this.setActiu((rs.getString(prefix + "_actiu").equals("S")));
		this.setDataAlta(rs.getDate(prefix + "_data_alta"));
		this.setDataBaixa(rs.getDate(prefix + "_data_baixa"));
		this.setMotiuBaixa(rs.getString(prefix + "_motiu_baixa"));
	}
	
}
